import request from '@/utils/request'

/**
 * 获取服务区域列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.size 每页数量
 * @param {string} params.keyword 搜索关键词
 * @param {string} params.status 状态筛选
 */
export function getServiceAreasList(params) {
  return request({
    url: '/api/service-areas',
    method: 'get',
    params
  })
}

/**
 * 创建服务区域
 * @param {Object} data 服务区域数据
 * @param {string} data.name 区域名称
 * @param {string} data.province 省份
 * @param {string} data.city 城市
 * @param {string} data.district 区县
 * @param {number} data.maxDistance 最大配送距离
 * @param {number} data.deliveryFee 配送费
 * @param {number} data.freeDeliveryAmount 免配送费金额
 * @param {string} data.remark 备注
 */
export function createServiceArea(data) {
  return request({
    url: '/api/service-areas',
    method: 'post',
    data
  })
}

/**
 * 更新服务区域
 * @param {string|number} id 区域ID
 * @param {Object} data 更新数据
 */
export function updateServiceArea(id, data) {
  return request({
    url: `/api/service-areas/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除服务区域
 * @param {string|number} id 区域ID
 */
export function deleteServiceArea(id) {
  return request({
    url: `/api/service-areas/${id}`,
    method: 'delete'
  })
}

/**
 * 切换服务区域状态
 * @param {string|number} id 区域ID
 * @param {string} status 状态 enabled/disabled
 */
export function toggleServiceAreaStatus(id, status) {
  return request({
    url: `/api/service-areas/${id}/status`,
    method: 'put',
    data: { status }
  })
}

/**
 * 获取服务区域详情
 * @param {string|number} id 区域ID
 */
export function getServiceAreaDetail(id) {
  return request({
    url: `/api/service-areas/${id}`,
    method: 'get'
  })
}

/**
 * 获取省份列表
 */
export function getProvincesList() {
  return request({
    url: '/api/regions/provinces',
    method: 'get'
  })
}

/**
 * 获取城市列表
 * @param {string} provinceCode 省份代码
 */
export function getCitiesList(provinceCode) {
  return request({
    url: `/api/regions/cities/${provinceCode}`,
    method: 'get'
  })
}

/**
 * 获取区县列表
 * @param {string} cityCode 城市代码
 */
export function getDistrictsList(cityCode) {
  return request({
    url: `/api/regions/districts/${cityCode}`,
    method: 'get'
  })
}

/**
 * 批量导入服务区域
 * @param {File} file Excel文件
 */
export function importServiceAreas(file) {
  const formData = new FormData()
  formData.append('file', file)
  
  return request({
    url: '/api/service-areas/import',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 导出服务区域
 * @param {Object} params 查询参数
 */
export function exportServiceAreas(params) {
  return request({
    url: '/api/service-areas/export',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 获取服务区域统计
 */
export function getServiceAreasStats() {
  return request({
    url: '/api/service-areas/stats',
    method: 'get'
  })
}

/**
 * 批量更新服务区域状态
 * @param {Array} ids 区域ID数组
 * @param {string} status 状态
 */
export function batchUpdateServiceAreasStatus(ids, status) {
  return request({
    url: '/api/service-areas/batch/status',
    method: 'put',
    data: { ids, status }
  })
}

/**
 * 检查区域覆盖范围
 * @param {Object} data 检查参数
 * @param {number} data.latitude 纬度
 * @param {number} data.longitude 经度
 */
export function checkAreaCoverage(data) {
  return request({
    url: '/api/service-areas/check-coverage',
    method: 'post',
    data
  })
}
